home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickDraw3D 1.6 SDK / Mac SampleCode Previous / Grab Bag Samples - Mac / Current QD3D Libs & Headers / Interfaces / QD3DViewer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-18  |  12.7 KB  |  481 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                              **
  3.  **     Module:        QD3DViewer.h                                             **                        
  4.  **                                                                              **
  5.  **                                                                              **
  6.  **     Purpose:     Viewer Controller Interface File.                         **            
  7.  **                                                                              **
  8.  **                                                                              **
  9.  **     Copyright (C) 1994-1997 Apple Computer, Inc.  All rights reserved.     **
  10.  **                                                                              **
  11.  **                                                                              **
  12.  *****************************************************************************/
  13. #ifndef QD3DViewer_h
  14. #define QD3DViewer_h
  15.  
  16. #include "QD3D.h"
  17. #include "QD3DGroup.h"
  18.  
  19. #if defined(PRAGMA_ONCE) && PRAGMA_ONCE
  20.     #pragma once
  21. #endif  /*  PRAGMA_ONCE  */ 
  22.  
  23. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  24.  
  25. #if defined(__xlc__) || defined(__XLC121__)
  26.     #pragma options enum=small
  27. #endif
  28.  
  29. #include <Events.h>
  30. #include <Types.h>
  31. #include <Windows.h>
  32.  
  33. #if defined(__xlc__) || defined(__XLC121__)
  34.     #pragma options enum=reset
  35.     #pragma options enum=int
  36.     #pragma options align=power
  37. #elif defined(__MWERKS__)
  38.     #pragma enumsalwaysint on
  39.     #pragma options align=native
  40. #elif defined(__MRC__) || defined(__SC__)
  41.     #if __option(pack_enums)
  42.         #define PRAGMA_ENUM_RESET_QD3DVIEWER 1
  43.     #endif
  44.     #pragma options(!pack_enums)
  45.     #pragma options align=power
  46. #endif
  47.  
  48.  
  49. #ifdef __cplusplus
  50. extern "C" {
  51. #endif    /* __cplusplus */
  52.  
  53. typedef void *TQ3ViewerObject;
  54.  
  55. typedef OSErr (*TQ3ViewerDrawingCallbackMethod)(
  56.         TQ3ViewerObject    theViewer,
  57.         const void *data);
  58.  
  59.  
  60. enum {
  61.     kQ3ViewerShowBadge             = 1<<0,
  62.     kQ3ViewerActive                = 1<<1,
  63.     kQ3ViewerControllerVisible    = 1<<2,
  64.     kQ3ViewerDrawFrame            = 1<<3,
  65.     kQ3ViewerDraggingOff        = 1<<4,
  66.     
  67.     kQ3ViewerButtonCamera        = 1<<5,
  68.     kQ3ViewerButtonTruck        = 1<<6,
  69.     kQ3ViewerButtonOrbit        = 1<<7,
  70.     kQ3ViewerButtonZoom            = 1<<8,
  71.     kQ3ViewerButtonDolly        = 1<<9,
  72.     kQ3ViewerButtonReset        = 1<<10,
  73.     
  74.     kQ3ViewerOutputTextMode        = 1<<11,
  75.     kQ3ViewerDragMode            = 1<<12,
  76.  
  77.     kQ3ViewerDrawGrowBox        = 1<<13,
  78.     kQ3ViewerDrawDragBorder        = 1<<14,
  79.  
  80.     kQ3ViewerDraggingInOff        = 1<<15,
  81.     kQ3ViewerDraggingOutOff        = 1<<16,
  82.  
  83.     kQ3ViewerDefault            = 1<<31
  84. };
  85.  
  86. enum {
  87.     kQ3ViewerEmpty    = 0,
  88.     kQ3ViewerHasModel = 1<<0,
  89.     kQ3ViewerHasUndo  = 1<<1
  90. };
  91.  
  92. typedef enum TQ3ViewerCameraView {
  93.     kQ3ViewerCameraRestore,
  94.     kQ3ViewerCameraFit,
  95.     kQ3ViewerCameraFront,
  96.     kQ3ViewerCameraBack,
  97.     kQ3ViewerCameraLeft,
  98.     kQ3ViewerCameraRight,
  99.     kQ3ViewerCameraTop,
  100.     kQ3ViewerCameraBottom
  101. } TQ3ViewerCameraView;
  102.  
  103. /******************************************************************************
  104.  **                                                                             **
  105.  **        Return viewer version number                                         **
  106.  **                                                                             **
  107.  *****************************************************************************/
  108.  
  109. OSErr Q3ViewerGetVersion(
  110.     unsigned long        *majorRevision,
  111.     unsigned long        *minorRevision);
  112.  
  113.     
  114.     
  115. /******************************************************************************
  116.  **                                                                             **
  117.  **        Return viewer release version number                                 **
  118.  **        (in 'vers' format - e.g. 0x01518000 ==> 1.5.1 release)                 **
  119.  **                                                                             **
  120.  *****************************************************************************/
  121.  
  122. OSErr Q3ViewerGetReleaseVersion(
  123.     unsigned long        *releaseRevision);
  124.  
  125.     
  126.     
  127. /******************************************************************************
  128.  **                                                                             **
  129.  **        Creation and destruction                                             **
  130.  **        Note that this is not a QuickDraw 3D object                             **
  131.  **                                                                             **
  132.  *****************************************************************************/
  133.  
  134. TQ3ViewerObject Q3ViewerNew(
  135.     CGrafPtr        port,
  136.     Rect            *rect,
  137.     unsigned long    flags);
  138.     
  139. OSErr Q3ViewerDispose(
  140.     TQ3ViewerObject theViewer);
  141.  
  142.  
  143. /******************************************************************************
  144.  **                                                                             **
  145.  **        Functions to attach data to a viewer                                 **
  146.  **                                                                             **
  147.  *****************************************************************************/
  148.  
  149. OSErr Q3ViewerUseFile(
  150.     TQ3ViewerObject    theViewer,
  151.     long            refNum);
  152.     
  153. OSErr Q3ViewerUseData(
  154.     TQ3ViewerObject    theViewer,
  155.     void            *data,
  156.     long            size);
  157.  
  158.  
  159. /******************************************************************************
  160.  **                                                                             **
  161.  **        Functions to write data out from the Viewer                             **
  162.  **                                                                             **
  163.  *****************************************************************************/
  164.  
  165. OSErr Q3ViewerWriteFile(
  166.     TQ3ViewerObject    theViewer,
  167.     long            refNum);
  168.     
  169. unsigned long Q3ViewerWriteData(
  170.     TQ3ViewerObject    theViewer,
  171.     void            **data);
  172.  
  173.  
  174. /******************************************************************************
  175.  **                                                                             **
  176.  **        Use this function to force the Viewer to re-draw                     **
  177.  **                                                                             **
  178.  *****************************************************************************/
  179.  
  180. OSErr Q3ViewerDraw(
  181.     TQ3ViewerObject theViewer);
  182.  
  183. OSErr Q3ViewerDrawContent(
  184.     TQ3ViewerObject theViewer);
  185.  
  186. OSErr Q3ViewerDrawControlStrip(
  187.     TQ3ViewerObject theViewer);
  188.  
  189.  
  190. /******************************************************************************
  191.  **                                                                             **
  192.  **        Function used by the Viewer to filter and handle events                 **
  193.  **                                                                             **
  194.  *****************************************************************************/
  195.  
  196. Boolean Q3ViewerEvent(
  197.     TQ3ViewerObject    theViewer,
  198.     EventRecord        *evt);
  199.  
  200.  
  201. /******************************************************************************
  202.  **                                                                             **
  203.  **        This function returns a PICT of the contents of the                  **
  204.  **        Viewer's window.  The application should dispose the PICT.             **
  205.  **                                                                             **
  206.  *****************************************************************************/
  207.  
  208. PicHandle Q3ViewerGetPict(
  209.     TQ3ViewerObject theViewer);
  210.  
  211.  
  212. /******************************************************************************
  213.  **                                                                             **
  214.  **        Calls for dealing with Buttons                                         **
  215.  **                                                                             **
  216.  *****************************************************************************/
  217.  
  218. OSErr Q3ViewerGetButtonRect(
  219.     TQ3ViewerObject    theViewer,
  220.     unsigned long    button,
  221.     Rect            *rect);
  222.  
  223. unsigned long Q3ViewerGetCurrentButton(
  224.     TQ3ViewerObject    theViewer);
  225.     
  226. OSErr Q3ViewerSetCurrentButton(
  227.     TQ3ViewerObject    theViewer,
  228.     unsigned long    button);
  229.  
  230.  
  231. /******************************************************************************
  232.  **                                                                             **
  233.  **        Functions to set/get the group to be displayed by the Viewer.         **
  234.  **                                                                             **
  235.  *****************************************************************************/
  236.  
  237. OSErr Q3ViewerUseGroup(
  238.     TQ3ViewerObject    theViewer,
  239.     TQ3GroupObject    group);
  240.     
  241. TQ3GroupObject Q3ViewerGetGroup(
  242.     TQ3ViewerObject    theViewer);
  243.  
  244.  
  245. /******************************************************************************
  246.  **                                                                             **
  247.  **        Functions to set/get the color used to clear the window                 **
  248.  **                                                                             **
  249.  *****************************************************************************/
  250.  
  251. OSErr Q3ViewerSetBackgroundColor(
  252.     TQ3ViewerObject    theViewer,
  253.     TQ3ColorARGB    *color);
  254.     
  255. OSErr Q3ViewerGetBackgroundColor(
  256.     TQ3ViewerObject    theViewer,
  257.     TQ3ColorARGB    *color);
  258.  
  259.  
  260. /******************************************************************************
  261.  **                                                                             **
  262.  **        Getting/Setting a Viewer's View object.                              **
  263.  **                                                                             **
  264.  *****************************************************************************/
  265.  
  266. TQ3ViewObject Q3ViewerGetView(
  267.     TQ3ViewerObject    theViewer);
  268.  
  269. OSErr Q3ViewerRestoreView(
  270.     TQ3ViewerObject    theViewer);
  271.  
  272.  
  273. /******************************************************************************
  274.  **                                                                             **
  275.  **        Calls for setting/getting viewer flags                                 **
  276.  **                                                                             **
  277.  *****************************************************************************/
  278.  
  279. OSErr Q3ViewerSetFlags(
  280.     TQ3ViewerObject    theViewer,
  281.     unsigned long    flags);
  282.     
  283. unsigned long Q3ViewerGetFlags(
  284.     TQ3ViewerObject    theViewer);
  285.  
  286.  
  287. /******************************************************************************
  288.  **                                                                             **
  289.  **        Calls related to bounds/dimensions.  Bounds is the size of              **
  290.  **        the window.  Dimensions can either be the Rect from the ViewHints     **
  291.  **        or the current dimensions of the window (if you do a Set).             **
  292.  **                                                                             **
  293.  *****************************************************************************/
  294.  
  295. OSErr Q3ViewerSetBounds(
  296.     TQ3ViewerObject    theViewer,
  297.     Rect            *bounds);
  298.     
  299. OSErr Q3ViewerGetBounds(
  300.     TQ3ViewerObject    theViewer,
  301.     Rect            *bounds);
  302.  
  303. OSErr Q3ViewerSetDimension(
  304.     TQ3ViewerObject    theViewer,
  305.     unsigned long    width,
  306.     unsigned long    height);
  307.  
  308. OSErr Q3ViewerGetDimension(
  309.     TQ3ViewerObject    theViewer,
  310.     unsigned long    *width,
  311.     unsigned long    *height);
  312.  
  313. /* 1.1 */
  314. OSErr Q3ViewerGetMinimumDimension(
  315.     TQ3ViewerObject    theViewer,
  316.     unsigned long    *width,
  317.     unsigned long    *height);
  318.  
  319.  
  320. /******************************************************************************
  321.  **                                                                             **
  322.  **        Port related calls                                                     **
  323.  **                                                                             **
  324.  *****************************************************************************/
  325.  
  326. OSErr Q3ViewerSetPort(
  327.     TQ3ViewerObject    theViewer,
  328.     CGrafPtr        port);
  329.     
  330. CGrafPtr Q3ViewerGetPort(
  331.     TQ3ViewerObject    theViewer);
  332.  
  333.  
  334. /******************************************************************************
  335.  **                                                                             **
  336.  **        Adjust Cursor should be called from idle loop to allow the Viewer     **
  337.  **        to change the cursor according to the cursor position/object under     **
  338.  **        the cursor.                                                             **
  339.  **                                                                             **
  340.  *****************************************************************************/
  341.  
  342. Boolean Q3ViewerAdjustCursor(
  343.     TQ3ViewerObject    theViewer,
  344.     Point            *pt);
  345.  
  346. OSErr Q3ViewerCursorChanged(
  347.     TQ3ViewerObject    theViewer);
  348.  
  349.     
  350. /******************************************************************************
  351.  **                                                                             **
  352.  **        Returns the state of the viewer.  See the constant defined at the     **
  353.  **        top of this file.                                                     **
  354.  **                                                                             **
  355.  *****************************************************************************/
  356.  
  357. unsigned long Q3ViewerGetState(
  358.     TQ3ViewerObject    theViewer);
  359.  
  360.  
  361. /******************************************************************************
  362.  **                                                                             **
  363.  **        Clipboard utilities                                                     **
  364.  **                                                                             **
  365.  *****************************************************************************/
  366.  
  367. OSErr Q3ViewerClear(
  368.     TQ3ViewerObject    theViewer);
  369.     
  370. OSErr Q3ViewerCut(
  371.     TQ3ViewerObject    theViewer);
  372.     
  373. OSErr Q3ViewerCopy(
  374.     TQ3ViewerObject    theViewer);
  375.     
  376. OSErr Q3ViewerPaste(
  377.     TQ3ViewerObject    theViewer);
  378.  
  379.  
  380. /******************************************************************************
  381.  **                                                                             **
  382.  **        1.1                                                                     **
  383.  **        New Event Model                                                         **
  384.  **                                                                             **
  385.  *****************************************************************************/
  386.  
  387. Boolean Q3ViewerMouseDown(
  388.     TQ3ViewerObject    theViewer,
  389.     long                x,
  390.     long                y);
  391.  
  392. Boolean Q3ViewerContinueTracking(
  393.     TQ3ViewerObject    theViewer,
  394.     long                x,
  395.     long                y);
  396.  
  397. Boolean Q3ViewerMouseUp(
  398.     TQ3ViewerObject    theViewer,
  399.     long                x,
  400.     long                y);
  401.  
  402. Boolean Q3ViewerHandleKeyEvent(
  403.     TQ3ViewerObject        theViewer,
  404.     EventRecord            *evt);
  405.  
  406.  
  407. /******************************************************************************
  408.  **                                                                             **
  409.  **        1.1                                                                     **
  410.  **        Drawing CallBack                                                     **
  411.  **                                                                             **
  412.  *****************************************************************************/
  413.  
  414. OSErr Q3ViewerSetDrawingCallbackMethod(
  415.     TQ3ViewerObject                    theViewer,
  416.     TQ3ViewerDrawingCallbackMethod    callbackMethod,
  417.     const void                         *data);
  418.  
  419.  
  420. /******************************************************************************
  421.  **                                                                             **
  422.  **        1.1                                                                     **
  423.  **        Undo                                                                  **
  424.  **                                                                             **
  425.  *****************************************************************************/
  426.  
  427. OSErr Q3ViewerUndo(
  428.     TQ3ViewerObject    theViewer);
  429.         
  430. Boolean Q3ViewerGetUndoString(
  431.     TQ3ViewerObject    theViewer, 
  432.     char             *string,
  433.     unsigned long     *cnt);
  434.  
  435.  
  436. /******************************************************************************
  437.  **                                                                             **
  438.  **        1.1                                                                     **
  439.  **        New Camera Stuff                                                     **
  440.  **                                                                             **
  441.  *****************************************************************************/
  442.  
  443. OSErr Q3ViewerGetCameraCount(
  444.     TQ3ViewerObject    theViewer, 
  445.     unsigned long     *cnt);
  446.  
  447. OSErr Q3ViewerSetCameraByNumber(
  448.     TQ3ViewerObject    theViewer, 
  449.     unsigned long     cameraNo);
  450.  
  451. OSErr Q3ViewerSetCameraByView(
  452.     TQ3ViewerObject        theViewer, 
  453.     TQ3ViewerCameraView viewType);
  454.  
  455.  
  456.  
  457.  
  458. #ifdef __cplusplus
  459. }
  460. #endif    /* __cplusplus */
  461.  
  462.  
  463. #if defined(__xlc__) || defined(__XLC121__)
  464.     #pragma options enum=reset
  465.     #pragma options align=reset
  466. #elif defined(__MWERKS__)
  467.     #pragma enumsalwaysint reset
  468.     #pragma options align=reset
  469. #elif defined(__MRC__) || defined(__SC__)
  470.     #if PRAGMA_ENUM_RESET_QD3DVIEWER
  471.         #pragma options(pack_enums)
  472.         #undef PRAGMA_ENUM_RESET_QD3DVIEWER
  473.     #endif
  474.     #pragma options align=reset
  475. #endif
  476.  
  477. #endif  /* OS_MACINTOSH */
  478.  
  479. #endif    /* QD3DViewer_h */
  480.  
  481.